#pragma once

namespace SCRIPT
{
	inline constexpr std::array<std::string_view, 86> baseScripts = {
		"Action"sv,
		"Activator"sv,
		"ActiveMagicEffect"sv,
		"Actor"sv,
		"ActorBase"sv,
		"ActorValueInfo"sv,
		"Alias"sv,
		"Ammo"sv,
		"Apparatus"sv,
		"Armor"sv,
		"ArmorAddon"sv,
		"Art"sv,
		"AssociationType"sv,
		"Book"sv,
		"Cell"sv,
		"Class"sv,
		"ColorForm"sv,
		"CombatStyle"sv,
		"ConstructibleObject"sv,
		"Container"sv,
		"Debris"sv,
		"DefaultObjectManager"sv,
		"Door"sv,
		"EffectShader"sv,
		"Enchantment"sv,
		"EncounterZone"sv,
		"EquipSlot"sv,
		"Explosion"sv,
		"Faction"sv,
		"Flora"sv,
		"FootstepSet"sv,
		"Form"sv,
		"FormList"sv,
		"Furniture"sv,
		"GlobalVariable"sv,
		"Hazard"sv,
		"HeadPart"sv,
		"Idle"sv,
		"ImageSpaceModifier"sv,
		"ImpactDataSet"sv,
		"Ingredient"sv,
		"Key"sv,
		"Keyword"sv,
		"LeveledActor"sv,
		"LeveledItem"sv,
		"LeveledSpell"sv,
		"Light"sv,
		"LightingTemplate"sv,
		"Location"sv,
		"LocationAlias"sv,
		"LocationRefType"sv,
		"MagicEffect"sv,
		"MaterialObject"sv,
		"Message"sv,
		"MiscObject"sv,
		"MusicType"sv,
		"ObjectReference"sv,
		"Outfit"sv,
		"PROJECTILE"sv,
		"Package"sv,
		"Perk"sv,
		"Potion"sv,
		"Quest"sv,
		"Race"sv,
		"ReferenceAlias"sv,
		"SPELL"sv,
		"STATIC"sv,
		"Scene"sv,
		"Scroll"sv,
		"ShaderParticleGeometry"sv,
		"Shout"sv,
		"SoulGem"sv,
		"Sound"sv,
		"SoundCategory"sv,
		"SoundDescriptor"sv,
		"TalkingActivator"sv,
		"TextureSet"sv,
		"Topic"sv,
		"TopicInfo"sv,
		"TreeObject"sv,
		"VisualEffect"sv,
		"VoiceType"sv,
		"WEAPON"sv,
		"Weather"sv,
		"WordOfPower"sv,
		"WorldSpace"
	};

	bool is_script_attached(const RE::TESForm* a_form, const RE::BSFixedString& a_scriptName);

	bool is_script_attached(const RE::BGSBaseAlias* a_alias, const RE::BSFixedString& a_scriptName);

	bool is_script_attached(const RE::ActiveEffect* a_activeEffect, const RE::BSFixedString& a_scriptName);
}
